切换主题
forwardRef 弃用
字数
289 字
阅读时间
2 分钟
React 19 的变化
在 React 19 中,forwardRef
将不再必要,可以直接将 ref 作为 prop 传递[1]。
新的用法
js
// 直接在函数组件中接收 ref prop
function MyInput({ placeholder, ref }) {
return <input placeholder={placeholder} ref={ref} />;
}
// 使用时直接传递 ref
<MyInput ref={ref} />
旧的用法(将被弃用)
js
import { forwardRef } from 'react';
const MyInput = forwardRef(function MyInput(props, ref) {
return <input {...props} ref={ref} />;
});
重要说明
- React 团队将提供 codemod 工具来自动更新组件代码
forwardRef
将在未来版本中被完全移除- 类组件中的 ref 处理方式保持不变,因为它们引用的是组件实例[1:1]
类组件中的 ref
- 类组件仍需使用
React.forwardRef
或React.createRef
- ref 在类组件中不会作为 props 传递
迁移建议
- 等待 React 19 正式发布
- 使用官方提供的 codemod 工具进行代码迁移
- 在新代码中直接使用 ref prop 方式
- 对于类组件,保持现有的 ref 处理方式